/*
 ============================================================================
 Name        : FS.c
 Author      : Pablo Arias & Juan Pablo De Blas
 Version     : v0.1
 Copyright   : None
 Description : Primeros intentos de mappear el FS.
 	 	 	   ATENCION: Para usarlo tienen que cambiar el FILEPATH con la
 	 	 	   direccion donde tienen guardado el disco.
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>
#include "bootsecto.h"
#include "directoryEntry.h"
#include "lista.h"

#define FILEPATH "/home/utn_so/Desarrollo/Workspace/fat32.disk"
#define path "/carpeta/hello.txt"
#define path2 "/"
#define path3 "/aaa"


int main(void){

		char disk;
		unsigned int n9,n10,n8,bool,i;
		bootSector boot;
		int *fat_table;
		NodoEntry *lst = NULL;
		directoryEntry entry;

		//abro el disco.
		disk = open(FILEPATH, O_RDONLY);

		//Copio el bootsector en el TAD boot.
		boot = getBootSector(disk);

		fat_table=getFatTable(disk);

		i=clusterDeUnArchivo(disk,"/segundoparcial.doc",3);
		printf("i:%d\n",i);

		n8=getSectorClusterN(8,boot);
		n9=getSectorClusterN(9,boot);
		n10=getSectorClusterN(10,boot);
		/*
		bool=read_entry(disk,path3,boot.rootCluster,&entry);
		printf("bool:%d\n",bool);

		if (bool==1){
			puts("entrada:");
			puts(path3);
			printEntry(entry);
		}
		else{
			puts("No existe el fichero o el directorio =(");
		}

		bool = read_directory(disk,&lst,path2,boot.rootCluster);

		printf("bool:%d\n",bool);

		if(lst!=NULL){
			puts("muy bien aquí está el ls del path:");
			printf("%s\n",path2);
			printList_entry(lst);
		}
		else{
			if (bool==-1){
				puts("el directorio esta vacio! =|");
			}
			else{
				puts("No existe el fichero o el directorio =(");
			}
		}
		*/
		printf("la cantidad de sectores por FAT es %d \n", boot.fatSize);
		printf("el tamaño de cada FAT es %d \n", boot.fatSize*512);
		printf("la cantidad de sectores reservados es %d \n", boot.reservedSectors);
		printf("la cantidad de tablas fat es %d \n", boot.fatCant);
		printf("el root cluster comienza en el sector %d \n", boot.rootCluster);
		printf("la cantidad de sectores por cluster %d \n", boot.sectorPerCluster);
		printf("la direccion del cluster 2 es: %d \n", getSectorClusterN(2,boot));
		printf("la direccion del cluster 8 es: %d \n", getSectorClusterN(8,boot));
		printf("la direccion del cluster 9 es: %d \n", getSectorClusterN(9,boot));
		printf("la direccion del cluster 10 es: %d \n", getSectorClusterN(10,boot));
		printf("la direccion del cluster 12 es: (carpeta) %d \n", getSectorClusterN(12,boot));


		//printList_int(lst);
		//removerPrimerNodo(&lst);
		//imprimir(lst);

		close(disk);


	return EXIT_SUCCESS;
}


